package mb.klient.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import javax.xml.xpath.XPathExpressionException;

import mb.commons.AbstractDAO;
import mb.commons.DbConnection;
import mb.commons.XmlHelper;
import mb.klient.data.SendedHistoryData;

/**
 * Klasa dostępu do bazy danych dla Managera SendedHistory
 * @author Michał Budziło
 *
 */
public class SendedHistoryDAO extends AbstractDAO { 
	/**
	 * Konstruktor
	 */
	public SendedHistoryDAO() {
		conn = DbConnection.getConnection();
		helper = new XmlHelper("WEB-INF/xml/klient/sendedHistory.xml");
	}

	/**
	 * Metoda pobiera z bazy danych liste obiektow historii wyslanych paczek
	 * 
	 * @return lista obiektow
	 */
	public ArrayList<SendedHistoryData> getSendedHistoryDataList() {
		ArrayList<SendedHistoryData> list = new ArrayList<SendedHistoryData>();
		SendedHistoryData data;
		String login = getLogin();

		try {
			query = helper.getSqlString("sendedHistoryList",
					"sqlString/prepareMain/prepareStatment");
			prepStmt = conn.prepareStatement(query);
			prepStmt.setString(1, login);
			ResultSet rs = prepStmt.executeQuery();
			while (rs.next()) {
				data = new SendedHistoryData();
				data.setIdentPaczki(rs.getInt("id_paczki"));
				data.setImieOdbiorcy(rs.getString("imie2"));
				data.setNazwiskoOdbiorcy(rs.getString("nazwisko2"));
				data.setAdresOdbiorcy(rs.getString("adres2"));
				data.setKodOdbiorcy(rs.getString("kod2"));
				data.setMiastoOdbiorcy(rs.getString("miejscowosc2"));
				data.setDataNadania(rs.getDate("data_nad"));
				data.setDataOdbioru(rs.getDate("data_dor"));
				data.setStatus(rs.getString("status"));
				data.setOplata(rs.getDouble("oplata"));
				data.setPobranie(rs.getDouble("pobranie"));

				list.add(data);
			}

			return list;
		} catch (SQLException e) {
			error(e.getErrorCode() + " : " + e.getMessage());
			e.printStackTrace();
		} catch (XPathExpressionException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		return null;
	}

	/**
	 * Metoda usuwa paczkę z bazy danych
	 * @param idPaczki numer identyfikacyjny paczki
	 * @return true jeśli powiodło się usuwanie ,false jeśli nie
	 */
	public boolean deleteData(Integer idPaczki) {
		try {
			query = helper.getSqlString("deleteData",
					"sqlString/prepareMain/prepareStatment");
			prepStmt = conn.prepareStatement(query);
			prepStmt.setInt(1, idPaczki);
			return prepStmt.executeUpdate() == 0 ? false : true;

		} catch (SQLException e) {
			error(e.getErrorCode() + " : " + e.getMessage());
			e.printStackTrace();
		} catch (XPathExpressionException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return false;

	}

}
